/**
 * 历史记录
 */

class HistoryKeyword {
    static MAX_ITEM_COUNT = 10
    static KEY = 'keyword'
    keywordArr = []


    constructor() {
        /**
         * 历史记录应该全局只有一个
         * 单例模式 即 new 出的来实例 只有一个
         * 这里小程序缓存是唯一的 所以即使不适用单例模式也能保证历史记录唯一
         */
        
        // 单例模式的使用
        // if (typeof HistoryKeyword.instance === "object") {
        //     return HistoryKeyword.instance
        // }
        // this.keywordArr = this._getLocalKeyword()
        // HistoryKeyword.instance = this
        // return this

        this.keywordArr = this._getLocalKeyword()
    }

    /**
     *  将关键字存储
     * 1.去重
     * 2.检查容量是否超过 超过去掉末尾 从前插入新数据
     */
    save(keyword) {
        const isHas = this.keywordArr.some(k => {
            return k === keyword
        })
        if (isHas) {
            return
        }
        if (this.keywordArr.length >= HistoryKeyword.MAX_ITEM_COUNT) {
            this.keywordArr.pop()
        }
        this.keywordArr.unshift(keyword)
        this._refreshLocal()
    }

    get() {
        return this.keywordArr
    }

    clear() {
        this.keywordArr = []
        this._refreshLocal()
    }

    _getLocalKeyword() {
        const keywordArr = wx.getStorageSync(HistoryKeyword.KEY)
        if (!keywordArr) {
            wx.setStorageSync(HistoryKeyword.KEY, [])
            return []
        }
        return keywordArr
    }

    _refreshLocal() {
        wx.setStorageSync(HistoryKeyword.KEY, this.keywordArr)
    }
}

export {
    HistoryKeyword
}